$(function() {
    $('.selector').change(function() {
        function doSelectorRequest(s, m) {
            var t = $(m.target), p = {id: s.val()};
            if (m.params !== undefined) {
            	for (var param in m.params) {
            		p[param] = m.params[param];
            	}
            }
            t.html('<option value="">Загрузка...</option>');
            t.attr('disabled', 'disabled');
            $.get(m.url, p, function (data) {
                t.attr('disabled', '');
                var h = '';
                h += '<option value="' + m.defValue + '" selected="selected" class="first">' + m.defText + '</option>';
                t.html(h + data);
                t.val(m.defValue);
            });
        }

        var s = $(this); var m = s.metadata();

        if (m.targets !== undefined) {
            for (var i = 0, l = m.targets.length; i < l; i++) {
                doSelectorRequest(s, m.targets[i]);
            };
        } else {
            doSelectorRequest(s, m);
        }

    });
});
